/**
 * 测试对程序占用资源进行限制
 */

#include<iostream>
#include<unistd.h>
#include<sys/time.h>
#include<sys/resource.h>
#include<signal.h>
#include"../Comm/httplib.h"
#include<boost/algorithm/string.hpp>
#include<ctemplate/template.h>

using namespace std;
using namespace httplib;

void handler(int sig)
{
    cout<<"sig:"<<sig<<endl;
    exit(1);
}

int main()
{
    // for(int i=1;i<=31;i++)
    // {
    //     signal(i,handler);
    // }

    //限制CPU资源
    // struct rlimit rl;
    // rl.rlim_cur=1;
    // rl.rlim_max=RLIM_INFINITY;//无穷
    // setrlimit(RLIMIT_CPU,&rl);//限制CPU运行1s
    // while(true)
    // {}

    //限制内存资源
    // struct rlimit r;
    // r.rlim_cur=1024*1024*40;//40M
    // r.rlim_max=RLIM_INFINITY;
    // setrlimit(RLIMIT_AS,&r);
    // int count=0;
    // while(true)
    // {
    //     int* p=new int[1024*1024];
    //     count++;
    //     cout<<count<<endl;
    //     sleep(1);
    // }

    // Server server;

    // server.Get("/abc",[](const Request& req,Response& resp){
    //     resp.set_content("hello！haha！heihei！","text/plain;charset=utf-8");
    // });

    // server.listen("0.0.0.0",8888);

    //测试boost库split函数
    // std::vector<std::string> res;
    // const std::string sep=":";
    // const std::string str="1:2:哈哈:再见::::a::b";
    // //boost::algorithm::token_compress_on：出现多个连续分隔符时不保留空串
    // //boost::algorithm::token_compress_off：出现多个连续分隔符时保留空串
    // boost::split(res,str,boost::is_any_of(sep),boost::algorithm::token_compress_on);

    // for(const auto&s:res)
    // {
    //     std::cout<<s<<std::endl;
    // }

    //测试ctemplate
    std::string in_html="./test.html";
    std::string val="hahahah";

    //形成数据字典
    ctemplate::TemplateDictionary root("test");
    root.SetValue("key",val);

    //获取要渲染的网页对象
    ctemplate::Template *tpl=ctemplate::Template::GetTemplate(in_html,ctemplate::DO_NOT_STRIP);

    //渲染网页(添加字典到要渲染的网页中)
    std::string out_html;
    tpl->Expand(&out_html,&root);

    //输出渲染的结果
    std::cout<<out_html<<std::endl;
    return 0;
}